Socket
Socket
Sign inDemoInstall

loglevel-plugin-prefix

Package Overview
Dependencies
0
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    loglevel-plugin-prefix

Plugin for loglevel message prefixing


Version published
Weekly downloads
1.2M
decreased by-28.35%
Maintainers
1
Install size
17.4 kB
Created
Weekly downloads
 

Readme

Source

loglevel-plugin-prefix

Plugin for loglevel message prefixing

Installation

npm install loglevel-plugin-prefix --save

API

apply(log[, options]);

This method applies the plugin to the logger.

log - root logger, imported from loglevel package

options - configuration object

var defaults = {
  template: '[%t] %l:',
  timestampFormatter: function (date) {
    return date.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, '$1');
  },
  levelFormatter: function (level) {
    return level.toUpperCase();
  },
  nameFormatter: function (name) {
    return name || 'root';
  }
};

Plugin formats the prefix using template option as a printf-like format.

The template is a string containing zero or more placeholder tokens. Each placeholder token is replaced with the value from loglevel messages parameters. Supported placeholders are:

  • %t - timestamp of message
  • %l - level of message
  • %n - name of logger

The timestampFormatter, levelFormatter and nameFormatter is a functions for formatting corresponding values

disable();

This method cancels the effect of the plugin.

Base usage

Browser directly

<script src="https://unpkg.com/loglevel/dist/loglevel.min.js"></script>
<script src="https://unpkg.com/loglevel-plugin-prefix/dist/loglevel-plugin-prefix.min.js"></script>

<script>
  var logger = log.noConflict();
  var prefixer = prefix.noConflict();
  prefixer.apply(logger);
  logger.warn('prefixed message');
</script>

Output

[16:53:46] WARN: prefixed message

ES6

import log from 'loglevel';
import prefix from 'loglevel-plugin-prefix';

prefix.apply(log);
log.warn('prefixed message');

CommonJS

var log = require('loglevel');
var prefix = require('loglevel-plugin-prefix');

prefix.apply(log);
log.warn('prefixed message');

AMD

define(['loglevel', 'loglevel-plugin-prefix'], function(log, prefix) {
  prefix.apply(log);
  log.warn('prefixed message');
});

Custom options

var log = require('loglevel');
var prefix = require('loglevel-plugin-prefix');

prefix.apply(log, {
  template: '[%t] %l (%n) static text:',
  timestampFormatter: function (date) { return date.toISOString() },
  levelFormatter: function (level) { return level.charAt(0).toUpperCase() + level.substr(1) },
  nameFormatter: function (name) { return name || 'global' }
});

log.warn('prefixed message');

Output

[2017-05-29T12:53:46.000Z] Warn (global) static text: prefixed message

Example

// moduleA.js
var log = require('loglevel');

module.exports = function () {
  log.warn('message from moduleA');
}
// moduleB.js
var log = require('loglevel');

var logger = log.getLogger('moduleB');

module.exports = function () {
  logger.warn('message from moduleB');
}
// moduleC.js
var log = require('loglevel');

module.exports = function () {
  var logger = log.getLogger('moduleC');
  logger.warn('message from moduleC');
}
// main.js
var log = require('loglevel');
var prefix = require('loglevel-plugin-prefix');

var a = require('./moduleA');
var b = require('./moduleB');
var c = require('./moduleC');

log.warn('message from root %s prefixing', 'before');

prefix.apply(log, { template: '[%t] %l (%n):' });

log.warn('message from root %s prefixing', 'after');

a();
b();
c();

prefix.apply(log, {
  template: '[%t] %l:',
  timestampFormatter: function (date) { return date.toISOString() }
});

log.warn('message from root after reapplying');

prefix.disable();

log.warn('message from root after disabling');

Output

message from root before prefixing
[16:53:46] WARN (root): message from root after prefixing
[16:53:46] WARN (root): message from moduleA
message from moduleB
[16:53:46] WARN (moduleC): message from moduleC
[2017-05-29T12:53:46.000Z] WARN: message from root after reapplying
message from root after disabling

Errors

var log = require('loglevel');
var prefix = require('loglevel-plugin-prefix');
var mock = require('loglevel-plugin-mock');

log.enableAll();

prefix.apply(log);
log.info('message from root after prefixing');

prefix.apply(log, { timestampFormatter: function (date) { return date.toISOString() } });
log.info('message from root after pre-prefixing');

mock.apply(log);

try {
  prefix.apply(log, { template: '[%t] %l (%n):' });
} catch(e) {
  log.error(e);
};

try {
  prefix.disable();
} catch(e) {
  log.error(e);
};

mock.disable();

var logger = log.getLogger('child');

try {
  prefix.apply(logger, { template: '[%t] %l (%n):' });
} catch(e) {
  logger.error(e);
};

logger.info('message from child logger');

Output

[16:53:46] INFO: message from root after prefixing
[2017-05-29T12:53:46.000Z] INFO: message from root after pre-prefixing
[2017-05-29T12:53:46.000Z] ERROR: Error: You can't reassign a plugin after appling another plugin
[2017-05-29T12:53:46.000Z] ERROR: Error: You can't disable a plugin after appling another plugin
[2017-05-29T12:53:46.000Z] ERROR: TypeError: Argument is not a root loglevel object
[2017-05-29T12:53:46.000Z] INFO: message from child logger

Keywords

FAQs

Last updated on 19 Jun 2017

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc